#所有权和引用借用
-
每个值都有一个所有者 (即变量)
-
值在任意时刻有且只有一个所有者
-
当离开所有者所处作用域时,值被销毁
能让所有权发生变动的行为:
借用 (borrow)
,移动 (move)
这两种行为发生后,对于借用
的数据如果没有返还 (return)
则不能访问,已移动的则在任何时刻都不能访问
借用
发生在函数中则能返还,就是在函数退出时自动归还,而在相同作用域下发生的借用就是有借无还了,等同于移动
// 借用一个字符串然后清了返还
#[allow(unused)]
fn borrow(source: &mut String) {
source.clear();
source.push_str("喵喵喵")
}
#[allow(unused_mut)]
fn main() {
let mut s1 = String::from("Hello");
let mut s2 = &mut s1;
// s2.push_str(" world!");
println!("prev: {}, {}", s1, s2);
// borrow(&mut s2);
// println!("next: {}, {}", "s1", s2);
}